<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>var let const</title>
</head>

<body>
    <script>
        // 用let定义变量，是从ES6开始的新语法，ES6 --> ECMAScript6 
        var a = 100
        var a = 200 // var 的第一个问题，允许变量同名，后面的会将前面的覆盖。
        console.log(a);

        console.log(b); // var 的第二个问题，在定义变量前能使用变量 
        var b = 200     // 在一个作用域里面，var 定义的变量会前置作用域顶部定义

        if (true) {
            var c = 20
            console.log(c);
        }
        
        // var 的第三个问题，无法定义局部变量，只要是var定义的变量，都会被前置到作用域的顶部定义
        console.log(c);
        let d = 100
        // let d = 200 //这里会报错，提示d已经定义过了
        console.log(e); // 这里也会报错，提示不能在e初始化前使用它
        let e = 200
        if (true) {
            let f = 20 // 这里的f 是if语句里面的局部变量，只能在if里面使用
            console.log(f);
        }
        console.log(f); // 这里也会报错，提示f没有定义
        // const 是定义常量，常量在定义的时候必须要赋值，并且之后不允许改变值
        const g = 200
        console.log(g);
        // 值固定不变的变量可以定义为常量，比如：域名，IP地址，后台接口等等










    </script>
</body>

</html>